ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ WeakMap ಮತ್ತು WeakSet ಅನ್ವೇಷಿಸಿ, ದಕ್ಷ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಗೆ ಶಕ್ತಿಯುತ ಸಾಧನಗಳು. ಇವು ಮೆಮೊರಿ ಲೀಕ್ಗಳನ್ನು ತಡೆಯುವ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಉತ್ತಮಗೊಳಿಸುವ ಬಗೆಯನ್ನು ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳೊಂದಿಗೆ ತಿಳಿಯಿರಿ.
ಮೆಮೊರಿ ನಿರ್ವಹಣೆಗಾಗಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ WeakMap ಮತ್ತು WeakSet: ಒಂದು ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ
ದೃಢವಾದ ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯುಳ್ಳ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸುವಲ್ಲಿ ಮೆಮೊರಿ ನಿರ್ವಹಣೆ ಒಂದು ಪ್ರಮುಖ ಅಂಶವಾಗಿದೆ. ಆಬ್ಜೆಕ್ಟ್ಗಳು ಮತ್ತು ಅರೇಗಳಂತಹ ಸಾಂಪ್ರದಾಯಿಕ ಡೇಟಾ ರಚನೆಗಳು ಕೆಲವೊಮ್ಮೆ ಮೆಮೊರಿ ಲೀಕ್ಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು, ವಿಶೇಷವಾಗಿ ಆಬ್ಜೆಕ್ಟ್ ರೆಫರೆನ್ಸ್ಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ. ಅದೃಷ್ಟವಶಾತ್, ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ WeakMap
ಮತ್ತು WeakSet
ಎಂಬ ಎರಡು ಶಕ್ತಿಯುತ ಸಾಧನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇವುಗಳನ್ನು ಈ ಸವಾಲುಗಳನ್ನು ಎದುರಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಈ ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ WeakMap
ಮತ್ತು WeakSet
ನ ಸೂಕ್ಷ್ಮತೆಗಳನ್ನು ವಿವರಿಸುತ್ತದೆ, ಅವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ, ಅವುಗಳ ಪ್ರಯೋಜನಗಳು, ಮತ್ತು ನಿಮ್ಮ ಯೋಜನೆಗಳಲ್ಲಿ ಅವುಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಬಳಸಿಕೊಳ್ಳಲು ಸಹಾಯ ಮಾಡಲು ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಮೆಮೊರಿ ಲೀಕ್ಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು
WeakMap
ಮತ್ತು WeakSet
ಬಗ್ಗೆ ತಿಳಿಯುವ ಮೊದಲು, ಅವುಗಳು ಪರಿಹರಿಸುವ ಸಮಸ್ಯೆಯನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮುಖ್ಯ: ಮೆಮೊರಿ ಲೀಕ್ಗಳು. ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ಮೆಮೊರಿಯನ್ನು ಹಂಚಿಕೆ ಮಾಡಿದಾಗ ಆದರೆ ಆ ಮೆಮೊರಿ ಇನ್ನು ಮುಂದೆ ಅಗತ್ಯವಿಲ್ಲದಿದ್ದರೂ ಅದನ್ನು ಸಿಸ್ಟಮ್ಗೆ ಹಿಂತಿರುಗಿಸಲು ವಿಫಲವಾದಾಗ ಮೆಮೊರಿ ಲೀಕ್ ಸಂಭವಿಸುತ್ತದೆ. ಕಾಲಾನಂತರದಲ್ಲಿ, ಈ ಲೀಕ್ಗಳು ಸಂಗ್ರಹವಾಗಬಹುದು, ಇದರಿಂದಾಗಿ ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ ನಿಧಾನವಾಗುತ್ತದೆ ಮತ್ತು ಅಂತಿಮವಾಗಿ ಕ್ರ್ಯಾಶ್ ಆಗಬಹುದು.
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ, ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯನ್ನು ಹೆಚ್ಚಾಗಿ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ವಹಿಸುತ್ತದೆ. ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ನಿಯತಕಾಲಿಕವಾಗಿ ರೂಟ್ ಆಬ್ಜೆಕ್ಟ್ಗಳಿಂದ (ಗ್ಲೋಬಲ್ ಆಬ್ಜೆಕ್ಟ್, ಕಾಲ್ ಸ್ಟಾಕ್, ಇತ್ಯಾದಿ) ಇನ್ನು ಮುಂದೆ ತಲುಪಲಾಗದ ಆಬ್ಜೆಕ್ಟ್ಗಳು ಆಕ್ರಮಿಸಿಕೊಂಡಿರುವ ಮೆಮೊರಿಯನ್ನು ಗುರುತಿಸುತ್ತದೆ ಮತ್ತು ಮರುಪಡೆಯುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಉದ್ದೇಶಪೂರ್ವಕವಲ್ಲದ ಆಬ್ಜೆಕ್ಟ್ ರೆಫರೆನ್ಸ್ಗಳು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಅನ್ನು ತಡೆಯಬಹುದು, ಇದು ಮೆಮೊರಿ ಲೀಕ್ಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಒಂದು ಸರಳ ಉದಾಹರಣೆಯನ್ನು ಪರಿಗಣಿಸೋಣ:
let element = document.getElementById('myElement');
let data = {
element: element,
value: 'Some data'
};
// ... later
// ಎಲಿಮೆಂಟ್ ಅನ್ನು DOM ನಿಂದ ತೆಗೆದುಹಾಕಿದರೂ, 'data' ಇನ್ನೂ ಅದಕ್ಕೆ ರೆಫರೆನ್ಸ್ ಅನ್ನು ಹೊಂದಿದೆ.
// ಇದು ಎಲಿಮೆಂಟ್ ಅನ್ನು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಮಾಡುವುದನ್ನು ತಡೆಯುತ್ತದೆ.
ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, data
ಆಬ್ಜೆಕ್ಟ್ DOM ಎಲಿಮೆಂಟ್ element
ಗೆ ರೆಫರೆನ್ಸ್ ಅನ್ನು ಹೊಂದಿದೆ. ಒಂದು ವೇಳೆ element
ಅನ್ನು DOM ನಿಂದ ತೆಗೆದುಹಾಕಿದರೂ ಮತ್ತು data
ಆಬ್ಜೆಕ್ಟ್ ಇನ್ನೂ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದರೆ, ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ element
ಆಕ್ರಮಿಸಿಕೊಂಡಿರುವ ಮೆಮೊರಿಯನ್ನು ಮರುಪಡೆಯಲು ಸಾಧ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಅದು ಇನ್ನೂ data
ಮೂಲಕ ತಲುಪಬಹುದಾಗಿದೆ. ಇದು ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಮೆಮೊರಿ ಲೀಕ್ಗಳ ಸಾಮಾನ್ಯ ಮೂಲವಾಗಿದೆ.
WeakMap ಪರಿಚಯ
WeakMap
ಎನ್ನುವುದು ಕೀ-ವ್ಯಾಲ್ಯೂ ಜೋಡಿಗಳ ಸಂಗ್ರಹವಾಗಿದೆ, ಇದರಲ್ಲಿ ಕೀಗಳು ಆಬ್ಜೆಕ್ಟ್ಗಳಾಗಿರಬೇಕು ಮತ್ತು ವ್ಯಾಲ್ಯೂಗಳು ಯಾವುದೇ ಮೌಲ್ಯಗಳಾಗಿರಬಹುದು. "ವೀಕ್" (ದುರ್ಬಲ) ಎಂಬ ಪದವು WeakMap
ನಲ್ಲಿನ ಕೀಗಳನ್ನು ದುರ್ಬಲವಾಗಿ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಲಾಗಿದೆ ಎಂಬುದನ್ನು ಸೂಚಿಸುತ್ತದೆ, ಅಂದರೆ ಆ ಕೀಗಳು ಆಕ್ರಮಿಸಿಕೊಂಡಿರುವ ಮೆಮೊರಿಯನ್ನು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಮರುಪಡೆಯುವುದನ್ನು ಅವು ತಡೆಯುವುದಿಲ್ಲ. ಒಂದು ಕೀ ಆಬ್ಜೆಕ್ಟ್ ನಿಮ್ಮ ಕೋಡ್ನ ಯಾವುದೇ ಇತರ ಭಾಗದಿಂದ ಇನ್ನು ಮುಂದೆ ತಲುಪಲಾಗದಿದ್ದರೆ, ಮತ್ತು ಅದನ್ನು ಕೇವಲ WeakMap
ನಿಂದ ಮಾತ್ರ ಉಲ್ಲೇಖಿಸಲಾಗುತ್ತಿದ್ದರೆ, ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಆ ಆಬ್ಜೆಕ್ಟ್ನ ಮೆಮೊರಿಯನ್ನು ಮರುಪಡೆಯಲು ಸ್ವತಂತ್ರವಾಗಿರುತ್ತದೆ. ಕೀಯನ್ನು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟ್ ಮಾಡಿದಾಗ, WeakMap
ನಲ್ಲಿನ ಅನುಗುಣವಾದ ವ್ಯಾಲ್ಯೂ ಕೂಡ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ಗೆ ಅರ್ಹವಾಗುತ್ತದೆ.
WeakMapನ ಪ್ರಮುಖ ಗುಣಲಕ್ಷಣಗಳು:
- ಕೀಗಳು ಆಬ್ಜೆಕ್ಟ್ಗಳಾಗಿರಬೇಕು:
WeakMap
ನಲ್ಲಿ ಕೇವಲ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಮಾತ್ರ ಕೀಗಳಾಗಿ ಬಳಸಬಹುದು. ಸಂಖ್ಯೆಗಳು, ಸ್ಟ್ರಿಂಗ್ಗಳು ಅಥವಾ ಬೂಲಿಯನ್ಗಳಂತಹ ಪ್ರಿಮಿಟಿವ್ ಮೌಲ್ಯಗಳಿಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ. - ದುರ್ಬಲ ರೆಫರೆನ್ಸ್ಗಳು: ಕೀಗಳನ್ನು ದುರ್ಬಲವಾಗಿ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಲಾಗುತ್ತದೆ, ಕೀ ಆಬ್ಜೆಕ್ಟ್ ಬೇರೆಡೆ ತಲುಪಲಾಗದಿದ್ದಾಗ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
- ಇಟರೇಶನ್ ಇಲ್ಲ:
WeakMap
ತನ್ನ ಕೀಗಳು ಅಥವಾ ವ್ಯಾಲ್ಯೂಗಳ ಮೇಲೆ ಇಟರೇಟ್ ಮಾಡಲು ಯಾವುದೇ ವಿಧಾನಗಳನ್ನು (ಉದಾಹರಣೆಗೆ,forEach
,keys
,values
) ಒದಗಿಸುವುದಿಲ್ಲ. ಏಕೆಂದರೆ ಈ ವಿಧಾನಗಳ ಅಸ್ತಿತ್ವವುWeakMap
ಕೀಗಳಿಗೆ ಬಲವಾದ ರೆಫರೆನ್ಸ್ಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುವ ಅಗತ್ಯವಿರುತ್ತದೆ, ಇದು ದುರ್ಬಲ ರೆಫರೆನ್ಸ್ಗಳ ಉದ್ದೇಶವನ್ನೇ ವಿಫಲಗೊಳಿಸುತ್ತದೆ. - ಖಾಸಗಿ ಡೇಟಾ ಸಂಗ್ರಹಣೆ:
WeakMap
ಅನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಆಬ್ಜೆಕ್ಟ್ಗಳೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ಖಾಸಗಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ, ಏಕೆಂದರೆ ಡೇಟಾವನ್ನು ಆಬ್ಜೆಕ್ಟ್ ಮೂಲಕ ಮಾತ್ರ ಪ್ರವೇಶಿಸಬಹುದು.
WeakMapನ ಮೂಲಭೂತ ಬಳಕೆ:
WeakMap
ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದಕ್ಕೆ ಇಲ್ಲಿದೆ ಒಂದು ಸರಳ ಉದಾಹರಣೆ:
let weakMap = new WeakMap();
let element = document.getElementById('myElement');
weakMap.set(element, 'ಎಲಿಮೆಂಟ್ಗೆ ಸಂಬಂಧಿಸಿದ ಕೆಲವು ಡೇಟಾ');
console.log(weakMap.get(element)); // ಔಟ್ಪುಟ್: ಎಲಿಮೆಂಟ್ಗೆ ಸಂಬಂಧಿಸಿದ ಕೆಲವು ಡೇಟಾ
// ಎಲಿಮೆಂಟ್ ಅನ್ನು DOM ನಿಂದ ತೆಗೆದುಹಾಕಿದರೆ ಮತ್ತು ಬೇರೆಡೆ ಉಲ್ಲೇಖಿಸದಿದ್ದರೆ,
// ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಅದರ ಮೆಮೊರಿಯನ್ನು ಮರುಪಡೆಯಬಹುದು, ಮತ್ತು WeakMap ನಲ್ಲಿನ ಎಂಟ್ರಿ ಕೂಡ ತೆಗೆದುಹಾಕಲ್ಪಡುತ್ತದೆ.
ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆ: DOM ಎಲಿಮೆಂಟ್ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವುದು
WeakMap
ನ ಒಂದು ಸಾಮಾನ್ಯ ಬಳಕೆಯೆಂದರೆ DOM ಎಲಿಮೆಂಟ್ಗಳೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸುವುದು ಮತ್ತು ಆ ಎಲಿಮೆಂಟ್ಗಳನ್ನು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಮಾಡುವುದನ್ನು ತಡೆಯದಿರುವುದು. ಒಂದು ವೆಬ್ಪುಟದಲ್ಲಿನ ಪ್ರತಿಯೊಂದು ಬಟನ್ಗಾಗಿ ನೀವು ಕೆಲವು ಮೆಟಾಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ಬಯಸುವ ಸನ್ನಿವೇಶವನ್ನು ಪರಿಗಣಿಸಿ:
let buttonMetadata = new WeakMap();
let button1 = document.getElementById('button1');
let button2 = document.getElementById('button2');
buttonMetadata.set(button1, { clicks: 0, label: 'ಬಟನ್ 1' });
buttonMetadata.set(button2, { clicks: 0, label: 'ಬಟನ್ 2' });
button1.addEventListener('click', () => {
let data = buttonMetadata.get(button1);
data.clicks++;
console.log(`ಬಟನ್ 1 ಅನ್ನು ${data.clicks} ಬಾರಿ ಕ್ಲಿಕ್ ಮಾಡಲಾಗಿದೆ`);
});
// button1 ಅನ್ನು DOM ನಿಂದ ತೆಗೆದುಹಾಕಿದರೆ ಮತ್ತು ಬೇರೆಡೆ ಉಲ್ಲೇಖಿಸದಿದ್ದರೆ,
// ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಅದರ ಮೆಮೊರಿಯನ್ನು ಮರುಪಡೆಯಬಹುದು, ಮತ್ತು buttonMetadata ನಲ್ಲಿನ ಅನುಗುಣವಾದ ಎಂಟ್ರಿ ಕೂಡ ತೆಗೆದುಹಾಕಲ್ಪಡುತ್ತದೆ.
ಈ ಉದಾಹರಣೆಯಲ್ಲಿ, buttonMetadata
ಪ್ರತಿ ಬಟನ್ನ ಕ್ಲಿಕ್ ಸಂಖ್ಯೆ ಮತ್ತು ಲೇಬಲ್ ಅನ್ನು ಸಂಗ್ರಹಿಸುತ್ತದೆ. ಒಂದು ಬಟನ್ ಅನ್ನು DOM ನಿಂದ ತೆಗೆದುಹಾಕಿದರೆ ಮತ್ತು ಬೇರೆಡೆ ಉಲ್ಲೇಖಿಸದಿದ್ದರೆ, ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಅದರ ಮೆಮೊರಿಯನ್ನು ಮರುಪಡೆಯಬಹುದು, ಮತ್ತು buttonMetadata
ನಲ್ಲಿನ ಅನುಗುಣವಾದ ಎಂಟ್ರಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆಗೆದುಹಾಕಲ್ಪಡುತ್ತದೆ, ಇದು ಮೆಮೊರಿ ಲೀಕ್ ಅನ್ನು ತಡೆಯುತ್ತದೆ.
ಅಂತಾರಾಷ್ಟ್ರೀಕರಣದ ಪರಿಗಣನೆಗಳು
ಬಹು ಭಾಷೆಗಳನ್ನು ಬೆಂಬಲಿಸುವ ಬಳಕೆದಾರ ಇಂಟರ್ಫೇಸ್ಗಳೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ, WeakMap
ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಬಹುದು. ನೀವು DOM ಎಲಿಮೆಂಟ್ಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಸ್ಥಳೀಯ-ನಿರ್ದಿಷ್ಟ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಬಹುದು:
let localizedStrings = new WeakMap();
let heading = document.getElementById('heading');
// ಇಂಗ್ಲಿಷ್ ಆವೃತ್ತಿ
localizedStrings.set(heading, {
en: 'Welcome to our website!',
fr: 'Bienvenue sur notre site web!',
es: '¡Bienvenido a nuestro sitio web!'
});
function updateHeading(locale) {
let strings = localizedStrings.get(heading);
heading.textContent = strings[locale];
}
updateHeading('fr'); // ಹೆಡ್ಡಿಂಗ್ ಅನ್ನು ಫ್ರೆಂಚ್ಗೆ ಅಪ್ಡೇಟ್ ಮಾಡುತ್ತದೆ
ಈ ವಿಧಾನವು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಅನ್ನು ತಡೆಯುವಂತಹ ಬಲವಾದ ರೆಫರೆನ್ಸ್ಗಳನ್ನು ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳದೆ DOM ಎಲಿಮೆಂಟ್ಗಳೊಂದಿಗೆ ಸ್ಥಳೀಯ ಸ್ಟ್ರಿಂಗ್ಗಳನ್ನು ಸಂಯೋಜಿಸಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಒಂದು ವೇಳೆ `heading` ಎಲಿಮೆಂಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿದರೆ, `localizedStrings` ನಲ್ಲಿನ ಸಂಬಂಧಿತ ಸ್ಥಳೀಯ ಸ್ಟ್ರಿಂಗ್ಗಳು ಕೂಡ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ಗೆ ಅರ್ಹವಾಗುತ್ತವೆ.
WeakSet ಪರಿಚಯ
WeakSet
WeakMap
ಗೆ ಹೋಲುತ್ತದೆ, ಆದರೆ ಇದು ಕೀ-ವ್ಯಾಲ್ಯೂ ಜೋಡಿಗಳ ಬದಲಾಗಿ ಆಬ್ಜೆಕ್ಟ್ಗಳ ಸಂಗ್ರಹವಾಗಿದೆ. WeakMap
ನಂತೆ, WeakSet
ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ದುರ್ಬಲವಾಗಿ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳುತ್ತದೆ, ಅಂದರೆ ಅದು ಆ ಆಬ್ಜೆಕ್ಟ್ಗಳು ಆಕ್ರಮಿಸಿಕೊಂಡಿರುವ ಮೆಮೊರಿಯನ್ನು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಮರುಪಡೆಯುವುದನ್ನು ತಡೆಯುವುದಿಲ್ಲ. ಒಂದು ಆಬ್ಜೆಕ್ಟ್ ನಿಮ್ಮ ಕೋಡ್ನ ಯಾವುದೇ ಇತರ ಭಾಗದಿಂದ ಇನ್ನು ಮುಂದೆ ತಲುಪಲಾಗದಿದ್ದರೆ ಮತ್ತು ಅದನ್ನು ಕೇವಲ WeakSet
ನಿಂದ ಮಾತ್ರ ಉಲ್ಲೇಖಿಸಲಾಗುತ್ತಿದ್ದರೆ, ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಆ ಆಬ್ಜೆಕ್ಟ್ನ ಮೆಮೊರಿಯನ್ನು ಮರುಪಡೆಯಲು ಸ್ವತಂತ್ರವಾಗಿರುತ್ತದೆ.
WeakSetನ ಪ್ರಮುಖ ಗುಣಲಕ್ಷಣಗಳು:
- ಮೌಲ್ಯಗಳು ಆಬ್ಜೆಕ್ಟ್ಗಳಾಗಿರಬೇಕು:
WeakSet
ಗೆ ಕೇವಲ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಮಾತ್ರ ಸೇರಿಸಬಹುದು. ಪ್ರಿಮಿಟಿವ್ ಮೌಲ್ಯಗಳಿಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ. - ದುರ್ಬಲ ರೆಫರೆನ್ಸ್ಗಳು: ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ದುರ್ಬಲವಾಗಿ ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಲಾಗುತ್ತದೆ, ಆಬ್ಜೆಕ್ಟ್ ಬೇರೆಡೆ ತಲುಪಲಾಗದಿದ್ದಾಗ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
- ಇಟರೇಶನ್ ಇಲ್ಲ:
WeakSet
ತನ್ನ ಎಲಿಮೆಂಟ್ಗಳ ಮೇಲೆ ಇಟರೇಟ್ ಮಾಡಲು ಯಾವುದೇ ವಿಧಾನಗಳನ್ನು (ಉದಾಹರಣೆಗೆ,forEach
,values
) ಒದಗಿಸುವುದಿಲ್ಲ. ಏಕೆಂದರೆ ಇಟರೇಟ್ ಮಾಡಲು ಬಲವಾದ ರೆಫರೆನ್ಸ್ಗಳು ಬೇಕಾಗುತ್ತವೆ, ಇದು ಉದ್ದೇಶವನ್ನೇ ವಿಫಲಗೊಳಿಸುತ್ತದೆ. - ಸದಸ್ಯತ್ವ ಟ್ರ್ಯಾಕಿಂಗ್:
WeakSet
ಅನ್ನು ಒಂದು ಆಬ್ಜೆಕ್ಟ್ ನಿರ್ದಿಷ್ಟ ಗುಂಪು ಅಥವಾ ವರ್ಗಕ್ಕೆ ಸೇರಿದೆಯೇ ಎಂಬುದನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ಹೆಚ್ಚಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ.
WeakSetನ ಮೂಲಭೂತ ಬಳಕೆ:
WeakSet
ಅನ್ನು ಹೇಗೆ ಬಳಸುವುದು ಎಂಬುದಕ್ಕೆ ಇಲ್ಲಿದೆ ಒಂದು ಸರಳ ಉದಾಹರಣೆ:
let weakSet = new WeakSet();
let element1 = document.getElementById('element1');
let element2 = document.getElementById('element2');
weakSet.add(element1);
weakSet.add(element2);
console.log(weakSet.has(element1)); // ಔಟ್ಪುಟ್: true
console.log(weakSet.has(element2)); // ಔಟ್ಪುಟ್: true
// element1 ಅನ್ನು DOM ನಿಂದ ತೆಗೆದುಹಾಕಿದರೆ ಮತ್ತು ಬೇರೆಡೆ ಉಲ್ಲೇಖಿಸದಿದ್ದರೆ,
// ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟರ್ ಅದರ ಮೆಮೊರಿಯನ್ನು ಮರುಪಡೆಯಬಹುದು, ಮತ್ತು ಅದನ್ನು WeakSet ನಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ.
ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆ: ಸಕ್ರಿಯ ಬಳಕೆದಾರರನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುವುದು
WeakSet
ನ ಒಂದು ಬಳಕೆಯೆಂದರೆ ವೆಬ್ ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಸಕ್ರಿಯ ಬಳಕೆದಾರರನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುವುದು. ಬಳಕೆದಾರರು ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಸಕ್ರಿಯವಾಗಿ ಬಳಸುತ್ತಿರುವಾಗ ನೀವು ಬಳಕೆದಾರ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು WeakSet
ಗೆ ಸೇರಿಸಬಹುದು ಮತ್ತು ಅವರು ನಿಷ್ಕ್ರಿಯರಾದಾಗ ತೆಗೆದುಹಾಕಬಹುದು. ಇದು ಅವರ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಅನ್ನು ತಡೆಯದೆ ಸಕ್ರಿಯ ಬಳಕೆದಾರರನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲು ನಿಮಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ.
let activeUsers = new WeakSet();
function userLoggedIn(user) {
activeUsers.add(user);
console.log(`ಬಳಕೆದಾರ ${user.id} ಲಾಗಿನ್ ಆಗಿದ್ದಾರೆ. ಸಕ್ರಿಯ ಬಳಕೆದಾರರು: ${activeUsers.has(user)}`);
}
function userLoggedOut(user) {
// WeakSet ನಿಂದ ಸ್ಪಷ್ಟವಾಗಿ ತೆಗೆದುಹಾಕುವ ಅಗತ್ಯವಿಲ್ಲ. ಬಳಕೆದಾರ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಇನ್ನು ಮುಂದೆ ಉಲ್ಲೇಖಿಸದಿದ್ದರೆ,
// ಅದು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟ್ ಆಗುತ್ತದೆ ಮತ್ತು WeakSet ನಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆಗೆದುಹಾಕಲ್ಪಡುತ್ತದೆ.
console.log(`ಬಳಕೆದಾರ ${user.id} ಲಾಗೌಟ್ ಆಗಿದ್ದಾರೆ.`);
}
let user1 = { id: 1, name: 'ಆಲಿಸ್' };
let user2 = { id: 2, name: 'ಬಾಬ್' };
userLoggedIn(user1);
userLoggedIn(user2);
userLoggedOut(user1);
// ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ, user1 ಅನ್ನು ಬೇರೆಡೆ ಉಲ್ಲೇಖಿಸದಿದ್ದರೆ, ಅದನ್ನು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟ್ ಮಾಡಲಾಗುತ್ತದೆ
// ಮತ್ತು activeUsers WeakSet ನಿಂದ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ.
ಬಳಕೆದಾರರ ಟ್ರ್ಯಾಕಿಂಗ್ಗಾಗಿ ಅಂತಾರಾಷ್ಟ್ರೀಯ ಪರಿಗಣನೆಗಳು
ವಿವಿಧ ಪ್ರದೇಶಗಳ ಬಳಕೆದಾರರೊಂದಿಗೆ ವ್ಯವಹರಿಸುವಾಗ, ಬಳಕೆದಾರರ ಆದ್ಯತೆಗಳನ್ನು (ಭಾಷೆ, ಕರೆನ್ಸಿ, ಸಮಯ ವಲಯ) ಬಳಕೆದಾರ ಆಬ್ಜೆಕ್ಟ್ಗಳ ಜೊತೆಗೆ ಸಂಗ್ರಹಿಸುವುದು ಸಾಮಾನ್ಯ ಅಭ್ಯಾಸವಾಗಿದೆ. WeakSet
ಜೊತೆಗೆ WeakMap
ಅನ್ನು ಬಳಸುವುದು ಬಳಕೆದಾರರ ಡೇಟಾ ಮತ್ತು ಸಕ್ರಿಯ ಸ್ಥಿತಿಯ ದಕ್ಷ ನಿರ್ವಹಣೆಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ:
let activeUsers = new WeakSet();
let userPreferences = new WeakMap();
function userLoggedIn(user, preferences) {
activeUsers.add(user);
userPreferences.set(user, preferences);
console.log(`ಬಳಕೆದಾರ ${user.id} ಆದ್ಯತೆಗಳೊಂದಿಗೆ ಲಾಗಿನ್ ಆಗಿದ್ದಾರೆ:`, userPreferences.get(user));
}
let user1 = { id: 1, name: 'ಆಲಿಸ್' };
let user1Preferences = { language: 'en', currency: 'USD', timeZone: 'America/Los_Angeles' };
userLoggedIn(user1, user1Preferences);
ಬಳಕೆದಾರ ಆಬ್ಜೆಕ್ಟ್ ಜೀವಂತವಿರುವಾಗ ಮಾತ್ರ ಬಳಕೆದಾರರ ಆದ್ಯತೆಗಳನ್ನು ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಬಳಕೆದಾರ ಆಬ್ಜೆಕ್ಟ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟ್ ಆದರೆ ಮೆಮೊರಿ ಲೀಕ್ಗಳನ್ನು ತಡೆಯುತ್ತದೆ ಎಂದು ಇದು ಖಚಿತಪಡಿಸುತ್ತದೆ.
WeakMap vs. Map ಮತ್ತು WeakSet vs. Set: ಪ್ರಮುಖ ವ್ಯತ್ಯಾಸಗಳು
WeakMap
ಮತ್ತು Map
, ಹಾಗೂ WeakSet
ಮತ್ತು Set
ನಡುವಿನ ಪ್ರಮುಖ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಮುಖ್ಯ:
ಗುಣಲಕ್ಷಣ | WeakMap |
Map |
WeakSet |
Set |
---|---|---|---|---|
ಕೀ/ವ್ಯಾಲ್ಯೂ ಪ್ರಕಾರ | ಕೇವಲ ಆಬ್ಜೆಕ್ಟ್ಗಳು (ಕೀಗಳು), ಯಾವುದೇ ಮೌಲ್ಯ (ವ್ಯಾಲ್ಯೂಗಳು) | ಯಾವುದೇ ಪ್ರಕಾರ (ಕೀಗಳು ಮತ್ತು ವ್ಯಾಲ್ಯೂಗಳು) | ಕೇವಲ ಆಬ್ಜೆಕ್ಟ್ಗಳು | ಯಾವುದೇ ಪ್ರಕಾರ |
ರೆಫರೆನ್ಸ್ ಪ್ರಕಾರ | ದುರ್ಬಲ (ಕೀಗಳು) | ಬಲವಾದ | ದುರ್ಬಲ | ಬಲವಾದ |
ಇಟರೇಶನ್ | ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ | ಅನುಮತಿಸಲಾಗಿದೆ (forEach , keys , values ) |
ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ | ಅನುಮತಿಸಲಾಗಿದೆ (forEach , values ) |
ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ | ಬೇರೆ ಯಾವುದೇ ಬಲವಾದ ರೆಫರೆನ್ಸ್ಗಳು ಇಲ್ಲದಿದ್ದರೆ ಕೀಗಳು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ಗೆ ಅರ್ಹವಾಗಿರುತ್ತವೆ | Map ಅಸ್ತಿತ್ವದಲ್ಲಿರುವವರೆಗೂ ಕೀಗಳು ಮತ್ತು ವ್ಯಾಲ್ಯೂಗಳು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ಗೆ ಅರ್ಹವಾಗಿರುವುದಿಲ್ಲ | ಬೇರೆ ಯಾವುದೇ ಬಲವಾದ ರೆಫರೆನ್ಸ್ಗಳು ಇಲ್ಲದಿದ್ದರೆ ಆಬ್ಜೆಕ್ಟ್ಗಳು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ಗೆ ಅರ್ಹವಾಗಿರುತ್ತವೆ | Set ಅಸ್ತಿತ್ವದಲ್ಲಿರುವವರೆಗೂ ಆಬ್ಜೆಕ್ಟ್ಗಳು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ಗೆ ಅರ್ಹವಾಗಿರುವುದಿಲ್ಲ |
WeakMap ಮತ್ತು WeakSet ಅನ್ನು ಯಾವಾಗ ಬಳಸಬೇಕು
WeakMap
ಮತ್ತು WeakSet
ಈ ಕೆಳಗಿನ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ ವಿಶೇಷವಾಗಿ ಉಪಯುಕ್ತವಾಗಿವೆ:
- ಆಬ್ಜೆಕ್ಟ್ಗಳೊಂದಿಗೆ ಡೇಟಾವನ್ನು ಸಂಯೋಜಿಸುವುದು: ಆಬ್ಜೆಕ್ಟ್ಗಳೊಂದಿಗೆ (ಉದಾ., DOM ಎಲಿಮೆಂಟ್ಗಳು, ಬಳಕೆದಾರ ಆಬ್ಜೆಕ್ಟ್ಗಳು) ಸಂಬಂಧಿಸಿದ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಬೇಕಾದಾಗ ಮತ್ತು ಆ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಮಾಡುವುದನ್ನು ತಡೆಯಬಾರದು ಎಂದಾದಾಗ.
- ಖಾಸಗಿ ಡೇಟಾ ಸಂಗ್ರಹಣೆ: ಆಬ್ಜೆಕ್ಟ್ಗಳೊಂದಿಗೆ ಸಂಬಂಧಿಸಿದ ಖಾಸಗಿ ಡೇಟಾವನ್ನು ಸಂಗ್ರಹಿಸಲು ನೀವು ಬಯಸಿದಾಗ, ಅದನ್ನು ಆಬ್ಜೆಕ್ಟ್ ಮೂಲಕ ಮಾತ್ರ ಪ್ರವೇಶಿಸಬೇಕು.
- ಆಬ್ಜೆಕ್ಟ್ ಸದಸ್ಯತ್ವವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡುವುದು: ಒಂದು ಆಬ್ಜೆಕ್ಟ್ ನಿರ್ದಿಷ್ಟ ಗುಂಪು ಅಥವಾ ವರ್ಗಕ್ಕೆ ಸೇರิดೆಯೇ ಎಂಬುದನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬೇಕಾದಾಗ ಮತ್ತು ಆ ಆಬ್ಜೆಕ್ಟ್ ಅನ್ನು ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಷನ್ ಮಾಡುವುದನ್ನು ತಡೆಯಬಾರದು ಎಂದಾದಾಗ.
- ದುಬಾರಿ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಕ್ಯಾಶಿಂಗ್ ಮಾಡುವುದು: ಆಬ್ಜೆಕ್ಟ್ಗಳ ಮೇಲೆ ನಡೆಸಿದ ದುಬಾರಿ ಕಾರ್ಯಾಚರಣೆಗಳ ಫಲಿತಾಂಶಗಳನ್ನು ಕ್ಯಾಶ್ ಮಾಡಲು ನೀವು WeakMap ಅನ್ನು ಬಳಸಬಹುದು. ಆಬ್ಜೆಕ್ಟ್ ಗಾರ್ಬೇಜ್ ಕಲೆಕ್ಟ್ ಆದರೆ, ಕ್ಯಾಶ್ ಮಾಡಿದ ಫಲಿತಾಂಶವೂ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ತಿರಸ್ಕರಿಸಲ್ಪಡುತ್ತದೆ.
WeakMap ಮತ್ತು WeakSet ಬಳಸಲು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು
- ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಕೀ/ವ್ಯಾಲ್ಯೂಗಳಾಗಿ ಬಳಸಿ:
WeakMap
ಮತ್ತುWeakSet
ಕ್ರಮವಾಗಿ ಕೇವಲ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಕೀಗಳು ಅಥವಾ ಮೌಲ್ಯಗಳಾಗಿ ಮಾತ್ರ ಸಂಗ್ರಹಿಸಬಲ್ಲವು ಎಂಬುದನ್ನು ನೆನಪಿಡಿ. - ಕೀ/ವ್ಯಾಲ್ಯೂಗಳಿಗೆ ಬಲವಾದ ರೆಫರೆನ್ಸ್ಗಳನ್ನು ತಪ್ಪಿಸಿ:
WeakMap
ಅಥವಾWeakSet
ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾದ ಕೀಗಳು ಅಥವಾ ಮೌಲ್ಯಗಳಿಗೆ ನೀವು ಬಲವಾದ ರೆಫರೆನ್ಸ್ಗಳನ್ನು ರಚಿಸುವುದಿಲ್ಲ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ, ಏಕೆಂದರೆ ಇದು ದುರ್ಬಲ ರೆಫರೆನ್ಸ್ಗಳ ಉದ್ದೇಶವನ್ನೇ ವಿಫಲಗೊಳಿಸುತ್ತದೆ. - ಪರ್ಯಾಯಗಳನ್ನು ಪರಿಗಣಿಸಿ: ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಬಳಕೆಯ ಸಂದರ್ಭಕ್ಕಾಗಿ
WeakMap
ಅಥವಾWeakSet
ಸರಿಯಾದ ಆಯ್ಕೆಯೇ ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡಿ. ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ, ಸಾಮಾನ್ಯMap
ಅಥವಾSet
ಹೆಚ್ಚು ಸೂಕ್ತವಾಗಿರಬಹುದು, ವಿಶೇಷವಾಗಿ ನೀವು ಕೀಗಳು ಅಥವಾ ಮೌಲ್ಯಗಳ ಮೇಲೆ ಇಟರೇಟ್ ಮಾಡಬೇಕಾದಾಗ. - ಸಂಪೂರ್ಣವಾಗಿ ಪರೀಕ್ಷಿಸಿ: ನೀವು ಮೆಮೊರಿ ಲೀಕ್ಗಳನ್ನು ರಚಿಸುತ್ತಿಲ್ಲ ಮತ್ತು ನಿಮ್ಮ
WeakMap
ಮತ್ತುWeakSet
ನಿರೀಕ್ಷೆಯಂತೆ ವರ್ತಿಸುತ್ತಿವೆ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ನಿಮ್ಮ ಕೋಡ್ ಅನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಪರೀಕ್ಷಿಸಿ.
ಬ್ರೌಸರ್ ಹೊಂದಾಣಿಕೆ
WeakMap
ಮತ್ತು WeakSet
ಎಲ್ಲಾ ಆಧುನಿಕ ಬ್ರೌಸರ್ಗಳಿಂದ ಬೆಂಬಲಿತವಾಗಿದೆ, ಅವುಗಳೆಂದರೆ:
- Google Chrome
- Mozilla Firefox
- Safari
- Microsoft Edge
- Opera
WeakMap
ಮತ್ತು WeakSet
ಅನ್ನು ಸ್ಥಳೀಯವಾಗಿ ಬೆಂಬಲಿಸದ ಹಳೆಯ ಬ್ರೌಸರ್ಗಳಿಗಾಗಿ, ಕಾರ್ಯವನ್ನು ಒದಗಿಸಲು ನೀವು ಪಾಲಿಫಿಲ್ಗಳನ್ನು ಬಳಸಬಹುದು.
ತೀರ್ಮಾನ
WeakMap
ಮತ್ತು WeakSet
ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಲ್ಲಿ ಮೆಮೊರಿಯನ್ನು ದಕ್ಷವಾಗಿ ನಿರ್ವಹಿಸಲು ಅಮೂಲ್ಯವಾದ ಸಾಧನಗಳಾಗಿವೆ. ಅವು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಮತ್ತು ಅವುಗಳನ್ನು ಯಾವಾಗ ಬಳಸಬೇಕು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನೀವು ಮೆಮೊರಿ ಲೀಕ್ಗಳನ್ನು ತಡೆಯಬಹುದು, ನಿಮ್ಮ ಅಪ್ಲಿಕೇಶನ್ನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಉತ್ತಮಗೊಳಿಸಬಹುದು ಮತ್ತು ಹೆಚ್ಚು ದೃಢವಾದ ಹಾಗೂ ನಿರ್ವಹಿಸಬಲ್ಲ ಕೋಡ್ ಅನ್ನು ಬರೆಯಬಹುದು. WeakMap
ಮತ್ತು WeakSet
ನ ಮಿತಿಗಳನ್ನು, ಉದಾಹರಣೆಗೆ ಕೀಗಳು ಅಥವಾ ಮೌಲ್ಯಗಳ ಮೇಲೆ ಇಟರೇಟ್ ಮಾಡಲು ಅಸಮರ್ಥತೆ, ಪರಿಗಣಿಸಲು ಮರೆಯದಿರಿ ಮತ್ತು ನಿಮ್ಮ ನಿರ್ದಿಷ್ಟ ಬಳಕೆಯ ಸಂದರ್ಭಕ್ಕಾಗಿ ಸೂಕ್ತವಾದ ಡೇಟಾ ರಚನೆಯನ್ನು ಆರಿಸಿಕೊಳ್ಳಿ. ಈ ಉತ್ತಮ ಅಭ್ಯಾಸಗಳನ್ನು ಅಳವಡಿಸಿಕೊಳ್ಳುವ ಮೂಲಕ, ಜಾಗತಿಕವಾಗಿ ವಿಸ್ತರಿಸುವಂತಹ ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಿರ್ಮಿಸಲು ನೀವು WeakMap
ಮತ್ತು WeakSet
ನ ಶಕ್ತಿಯನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು.